home *** CD-ROM | disk | FTP | other *** search
/ Video Toaster 4.3 / Video Toaster v4.3.iso / 3.1 / toasterall / arexx_examples / tpaint / tpcomposite.rexx < prev    next >
OS/2 REXX Batch file  |  1992-01-29  |  3KB  |  105 lines

  1. /* TPComposite.rexx -- Composite images in ToasterPaint */
  2. /* By Arnie Cachelin © 1992 NewTek Inc.                              */
  3.  
  4. /*
  5.   This program will merge two images in ToasterPaint, with variable transparency
  6.   applied to the second image.  The optional blend percentage (0-100%) is
  7.   the weight of the blend of the second picture; 0% leaves picture 1
  8.   unchanged, 100% mixes the two images with equal weight.  This is the
  9.   default weight.
  10.   To use the program, make sure TPaint is running, rexx is installed and
  11.   this script is in the current directory or in 'REXX:'.  From a shell,
  12.   simply type "rx TPComposite pic1 pic2 Blend savename".  If no blend is
  13.   specified, 100% is used.  If a blend % and a save name are included,
  14.   the final image wll be saved using that name.
  15.  */
  16.  
  17. PARSE ARG file1 file2 mix outfile
  18.  
  19.  
  20. if file1="" | file2="" then do
  21.   say "Usage: rx TPComposite Pic1 Pic2 [Blend %] [save name]"
  22.   exit
  23. end
  24.  
  25. Address "DigiPaint"     /* Tell ARexx where commands go  */
  26. if pos("DigiPaint",show(ports))=0 then do
  27.   say "Can't find ToasterPaint!"
  28.   exit
  29.   end
  30.  
  31. if ~exists(file1) then do
  32.     say "Can't find first input image file "file1
  33.     exit
  34.   end
  35. if ~exists(file2) then do
  36.     say "Can't find second input image file "file2
  37.     exit
  38.   end
  39.  
  40. Call LoadRGB(file1)
  41. 'Swap'          /* Load pic 2 into swap screen */
  42. Call LoadRGB(file2)
  43.  
  44. if mix="" then mix=100
  45. if mix>100 then mix=100
  46. if mix<0 then mix=1
  47. mix=((mix/100)*x2d(8000))%1    /* Make mix up to 50% blend 0x8000 */
  48. blend="$"||d2x(mix,4)  /* Set up hex value for blend slider */
  49.  
  50. 'Swap'        /* Back to pic 1 screen */
  51. 'Flon'        /* Fill On */
  52. 'Hvof'        /* Set gradient blend off */
  53. 'Pot0' blend  /* Set transparency level */
  54. 'Mswa'        /* Merge swap screen in */
  55. if outfile~="" then SaveRGB(outfile)
  56. exit
  57.  
  58. LoadFrameStore: PROCEDURE   /* Load FrameStore */
  59.   arg filename           /* must have ###.fs on front! */
  60.   'Loco'                 /* Call file requester  */
  61.   'Fnam'filename         /* Enter File name  */
  62.   'Okls'                 /* Hit the OK button  */
  63.   return 0
  64.  
  65. SaveFrameStore: PROCEDURE   /* Save FrameStore */
  66.   arg filename           /* must have ###.fs on front! */
  67.   'Saco'                 /* Call file requester  */
  68.   'Fnam'filename         /* Enter File name  */
  69.   'Okls'                 /* Hit the OK button  */
  70.   return 0
  71.  
  72. LoadRGB: PROCEDURE   /* Load IFF RGB, copy into swap buffer */
  73.   arg filename
  74.   'Lo24'                 /* Call file requester  */
  75.     Call SetFile(filename)
  76.   return
  77.  
  78. SaveRGB: PROCEDURE   /* Save IFF RGB, copy into swap buffer */
  79.   arg filename
  80.   'Sa24'                 /* Call file requester  */
  81.     Call SetFile(filename)
  82.   return
  83.  
  84. SetFile: PROCEDURE           /* Select file in current requester */
  85.   arg file
  86.   dirname=GetPathName(file)
  87.   'Dnam'dirname          /* Enter file path  */
  88.   'Dsel'                 /* Hit return on directory */
  89.   filename=GetFileName(file)
  90.   'Fnam'filename         /* Enter File name  */
  91.   'Okls'                 /* Hit the OK button  */
  92.   return
  93.  
  94. GetFileName: procedure  /* Extract file name from full file specification */
  95.    ARG fullfile
  96.    c = lastpos("/",fullfile)
  97.    if c = 0 then c = lastpos(":",fullfile)
  98.    return substr(fullfile, c + 1)
  99.  
  100. GetPathName: procedure  /* Extract directory name from full file specification */
  101.    ARG fullfile
  102.    c = lastpos("/",fullfile)
  103.    if c = 0 then c = lastpos(":",fullfile)
  104.    return left(fullfile,c)
  105.